Debugging Using Time Machines
نویسندگان
چکیده
Cyclic debugging is one of the most important and most commonly used activities in program development. During cyclic debugging, the program is repeatedly reexecuted to track down errors when a failure has been observed. This process necessitates reproducible program executions. Applying classical debugging techniques such using breakpoints or single stepping in real-time systems change the temporal behavior and make reproduction of the observed failure during debugging less likely, if not impossible. Consequently, these techniques are not directly applicable for cyclic debugging of real-time systems. In this paper we present how do you turn standard CPU instruction level simulator debuggers, JTAG/BDM debuggers or in circuit emulator debuggers into veritable time machines so you can debug your embedded application both forwards and backwards in time – repeatedly. By on-line recording significant system events, and off-line deterministically replaying them, we can inspect the real-time system in great detail while still preserving its real-time behavior.
منابع مشابه
Debugging Large Scale Applications in a Virtualized Environment
With the advent of petascale machines with hundreds of thousands of processors, debugging parallel applications is becoming an increasing challenge. Aside from the complicated debugging techniques required to debug applications at such scale, it is often difficult to gain access to these machines for a sufficient period of time, if at all. Some existing parallel debuggers are capable of handlin...
متن کاملDebugging operating systems with time-traveling virtual machines
Operating systems are among the most difficult of software systems to debug with traditional cyclic debugging. They are non-deterministic; they run for long periods of time; their state and code is large and complex; and their state is easily perturbed by the act of debugging. This paper describes a time-traveling virtual machine that overcomes many of the difficulties associated with debugging...
متن کاملDebugging Operating Systems with Time-Traveling Virtual Machines (Awarded General Track Best Paper Award!)
Operating systems are difficult to debug with traditional cyclic debugging. They are non-deterministic; they run for long periods of time; they interact directly with hardware devices; and their state is easily perturbed by the act of debugging. This paper describes a time-traveling virtual machine that overcomes many of the difficulties associated with debugging operating systems. Time travel ...
متن کاملc ○ 2010 FILIPPO GIOACHIN DEBUGGING LARGE SCALE APPLICATIONS WITH VIRTUALIZATION BY
Debugging is a fundamental part of software development, and one of the largest in terms of time spent. When developing parallel applications, debugging becomes much harder due to a whole new set of problems not present in sequential applications. One famously difficult example is a race condition. Moreover, sometimes a problem does not manifest itself when executing an application using few pr...
متن کاملAn ASM Semantics of Token Flow in UML 2 Activity Diagrams
The token flow semantics of UML 2 activity diagrams is formally defined using Abstract State Machines. Interruptible activity regions and multiplicity bounds for pins are considered for the first time in a comprehensive and rigorous way. The formalisation provides insight into problems with the UML specification, and their solutions. It also serves as a basis for an integrated environment suppo...
متن کامل